﻿//using System;
//using System.Collections.Generic;
//using System.Text;
//using Astro.Core;
//using System.Xml;
//using System.IO;
//using System.Collections.Specialized;
//using System.Web;
//using System.Text.RegularExpressions;

//namespace Astro.Plus.PlugIn
//{
//    public class VietnameseUrlFriendly : AstroEvent
//    {
//        HttpContext context = HttpContext.Current;

//        #region EditableForm members

//        public override string Name
//        {
//            get
//            {
//                return "Vietnamese URL Friendly";
//            }
//        }

//        public override string Description
//        {
//            get
//            {
//                return "Customize name of post or category to friendly, good for SEO";
//            }
//        }

//        public override bool IsEditable
//        {
//            get
//            {
//                return false;
//            }
//        }
//        #endregion

//        #region AstroEvent members

//        public override void Init(AstroApplication ga)
//        {
//            ga.BeforeInsert += new DataObjectEventHandler(ga_BeforeInsert);
//        }

//        void ga_BeforeInsert(DataBuddyBase dataObject, EventArgs e)
//        {
//            Post post = dataObject as Post;

//            if (post != null)
//            {
//                string postName = Util.CleanForUrl(System.Web.HttpContext.Current.Server.HtmlDecode(post.Title));

//                if (post.Name.Equals(postName))
//                {
//                    postName = KillUnicodeByRegex(System.Web.HttpContext.Current.Server.HtmlDecode(post.Title));
//                    post.Name = Util.CleanForUrl(postName);
//                }

//                return;
//            }

//            Category category = dataObject as Category;
//            if (category != null)
//            {
//                string linkName = Util.CleanForUrl(System.Web.HttpContext.Current.Server.HtmlDecode(category.Name));

//                if (category.LinkName.Equals(linkName))
//                {
//                    linkName = KillUnicodeByRegex(System.Web.HttpContext.Current.Server.HtmlDecode(category.Name));
//                    category.LinkName = Util.CleanForUrl(linkName);
//                }

//                return;
//            }
//        }

//        string KillUnicodeByRegex(string input)
//        {
//            Regex aReg;
//            // UPPER CASE            
//            aReg = new Regex("(À|Á|Ả|Ã|Ạ|Ă|Ắ|Ằ|Ẳ|Ẵ|Ặ|Â|Ầ|Ấ|Ẩ|Ẫ|Ậ)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "A");

//            aReg = new Regex("( )", RegexOptions.Singleline);
//            input = aReg.Replace(input, "-");

//            aReg = new Regex("(Đ)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "D");

//            aReg = new Regex("(È|É|Ẻ|Ẽ|Ẹ|Ê|Ế|Ề|Ể|Ễ|Ệ)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "E");

//            aReg = new Regex("(Ì|Í|Ỉ|Ĩ|Ị)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "I");

//            aReg = new Regex("(Ò|Ó|Ỏ|Õ|Ọ|Ô|Ồ|Ố|Ổ|Ỗ|Ộ|Ơ|Ớ|Ờ|Ở|Ỡ|Ợ)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "O");

//            aReg = new Regex("(Ú|Ù|Ủ|Ũ|Ụ|Ư|Ứ|Ừ|Ử|Ữ|Ự)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "U");

//            aReg = new Regex("(Ý|Ỳ|Ỷ|Ỹ|Ỵ)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "Y");

//            // LOWER CASE
//            aReg = new Regex("(á|à|ả|ã|ạ|â|ấ|ầ|ẩ|ẫ|ậ|ă|ắ|ằ|ẳ|ẵ|ặ)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "a");

//            aReg = new Regex("(đ)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "d");

//            aReg = new Regex("(é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "e");

//            aReg = new Regex("(í|ì|ỉ|ĩ|ị)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "i");

//            aReg = new Regex("(ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "o");

//            aReg = new Regex("(ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "u");

//            aReg = new Regex("(ý|ỳ|ỷ|ỹ|ỵ)", RegexOptions.Singleline);
//            input = aReg.Replace(input, "y");

//            return input;
//        }
//        #endregion
//    }
//}
